// 使用Node.js的http模块和fs模块，创建一个图片查看器服务器。用户可以通过访问/view?filename=图片名来查看指定的图片文件。

// 服务器监听在本地的4000端口。
// 将图片文件放在一个名为images的目录中。
// 如果请求的图片存在，返回图片内容，并设置Content-Type为image/jpeg或image/png（根据文件扩展名判断）。
// 如果请求的图片不存在，返回404状态码和“图片未找到”的提示信息。

// 导入模块
import fs from "fs";
import http from "http";

// 创建函数
function fn(req, res) {
  // 文件的路径
  const path = "./images/";

  // 当前请求的 路径
  const url = req.url;

  // 获取文件名称
  const fileName = url.split("=")[1];

  // 判断是否有输入图片名称
  if (fileName === "") {
    console.log("请输入图片的名称");
    // 直接退出函数
    return;
  } else {
    // 判断文件是否存在
    const fileExists = fs.existsSync(path + fileName);
    if (fileExists) {
      // 文件存在
      // 获取文件的后缀名
      const fileType = fileName.substring(fileName.lastIndexOf("."));

      // 不同后缀不同返回内容
      switch (fileType) {
        case ".jpeg":
          res.writeHead(200, { "Content-Type": "image/jpeg" });
          break;
        case ".png":
          res.writeHead(200, { "Content-Type": "image/png" });
          break;
      }

      // 创建一个可读流来读取并使用管道响应给浏览器
      fs.createReadStream(path + fileName).pipe(res);
    } else {
      // 文件不存在
      res.writeHead(404, { "Content-Type": "text/html;charset=utf8" });
      // 返回提示
      res.end("图片未找到");
    }
  }
}

// 服务器初始化
const server = http.createServer(fn);

// 监听本地端口
server.listen(4000);
